﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

// Reviewed

#pragma once

#include "IGeometry.h"

namespace gcmp
{
    /// \brief 三维点
    ///
    class IPoint3d : public IGeometry
    {
        DEFINE_CAST_DERIVED(gcmp::IPoint3d, gcmp::IGeometry);
    public:

        /// \brief 根据三维点的位置创建点几何
        /// \param[in] position  点的位置
        /// \return 点几何
        GCMP_GEOMETRY_INTERFACE_EXPORT static OwnerPtr<IPoint3d> Create(const Vector3d& position);

    public:

        /// \brief 获取三维点的位置
        /// \return 点的位置
        virtual Vector3d GetPosition() const = 0;

        /// \brief 设置三维点的位置
        /// \param[in] position  点的位置
        /// \return 成功返回true，失败返回false
        virtual bool SetPosition(const Vector3d& position) = 0;

    public:
        virtual ~IPoint3d() {}
    };
}
